﻿

namespace TwiMixer.RESTAPI
{
    using Twitterizer;

    public abstract class APIProvider : IRESTAPI
    {
        public string RequestTokenUrl { get; set; }
        public string AuthorizeBaseUrl { get; set; }
        public string AccessTokenUrl { get; set; }
        public string ConsumerKey { get; set; }
        public string ConsumerSecret { get; set; }
        public string CallbackUrl { get; set; }
        public string RESTBaseUrl { get; set; }
        public APIProviderEnum ApiProviderType;

        public APIProvider() 
        {
        
        }

        public APIProvider(OAuthTokens token, string callbackUrl) 
        {
        
        }

        public abstract string GetStatusesHomeTimeline(int count, int since_id, int max_id, int page, bool trim_user, bool include_rts, bool include_entities, bool exclude_replies, bool contributor_details);

        public abstract string GetStatusesHomeTimeline();

        public abstract string GetOAuthAuthorizationUrl();

        public abstract OAuthTokenResponse GetOAuthToken(string requestToken, string verifier, string requesetTokenSecret);

        public abstract string GetRESTUsersShow(OAuthTokens token, string uid);

        public abstract string OAuthRequestToken(string oauth_callback);

        public abstract string OAuthAuthorize(string oauth_token);

        public abstract string OAuthAccessToken(string oauth_token, string oauth_token_secret, string verifier);

        public abstract string Statuses_HomeTimeline();
    }
}